/*
 * array.h
 *
 *  Created on: 09.11.2009
 *      Author: chris
 */

#ifndef ARRAY_H_
#define ARRAY_H_

#include<string>
#include <sstream>
#include<map>
#include<vector>
#include<iostream>
#include "intToStr.h"

using namespace std;

namespace oal {
	class array {
	private:
		bool positionIteratorLoaded;
		map<string, array* >::iterator positionIterator;
		bool empty;
		string value;
		bool searchForObjectToDelete(string data);
	public:
		map<string, bool> itemsSetup;
		static vector<string> itemsBuilding;
		mutable map<string, array* > items;

		array();
		array(string first);
		array(string first, string second);
		array(string first, array second);

		virtual ~array();
		void destroy(void);
		array & operator[] (string data);
		// string & operator[] (char *data);
		void operator= (string data);
		array & operator= (const array & data);
		array & operator= (array *data);

		string get(void);
		string key(void);
		bool next(void);
		void setupIterator(void);

		string toString(void);
		int getEndPosition(string data);
		string getValueString(string data);
		string getValueInteger(string data);
		void fromString(string data);
		void debug(string tabs="");
		bool isEmpty(void);
	};
};
#endif /* ARRAY_H_ */
